There currently exist two distinct data types utilized to generate and represent images and other graphical objects on computing systems. These data types are typically referred to as “raster” and “vector” content. Raster content, also referred to as “bitmap” content, consists of a sequence of data representing a generally rectangular grid of picture elements, called “pixels.” Raster content generally corresponds pixel-for-pixel with a displayed or printed representation of the content. Because raster data is discrete, it generally does not scale well.
Vector content, on the other hand, refers to content that is represented by description, rather than by listing a value for each pixel in the content. Any geometric shape can be represented as vector content, and any arbitrary shape may be represented by a combination of such geometric shapes, and hence as vector content. For instance, a straight line segment may be described as vector content by describing its two endpoints, or by its slope, length, and origin. Likewise, a circle could be described in vector representation by describing its radius and center point. Accordingly, vector content is sometimes referred to as “geometric” data, since it defines objects by description rather than as a sequence of pixels. Because vector data is continuous, it tends to scale very well.
Due to the differences between vector and raster content, some operations are more easily performed on vector content while others are more easily performed on raster content. For instance, an operation to rescale a vector image generally involves a simple mathematical calculation. As an example, with respect to the vector circle described above, a scaling operation may simply involve multiplying the circle's radius by a desired value. The same operation on a raster circle would involve recalculating the positions of all of the pixels in the image, and potentially interpolating between existing pixels.
Because most current display devices display discrete pixels rather than continuous images, vector content must usually be “rasterized” before it can be displayed. At the same time, however, it is also typically necessary to maintain the vector content in its original format for rendering on a vector target device, such as a laser printer. Due to the significant differences in how vector and raster content is rendered and the differences in the types of target devices for the content, the processing tasks described above have typically been performed by separate software components. The use of multiple components to perform these tasks can lead to complexity, inefficiency, and inconsistency in the rendered output of vector and raster content.
It is with respect to these considerations, and others, that the disclosure presented herein has been made.